package br.com.vti.sisp_sicrim.antigo.dao;

import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.UUID;

import br.com.vti.sisp_sicrim.antigo.dao.util.HibernateUtil;

public class DidHistoricoDAO {

	private int codigoRetorno = 0; // *ERROR
	private String msgRetorno = ""; // *ERROR
	public long qtdRegistros = 0; // *counter
	public long nroRegistro = 0; // *counter
	private String[] listacol = { "", "NumeroRg", "NumeroCpf", "DataAtualizacao", "DataInclusao", "MatriculaInclusao", "NumeroProtocolo", "PolegarDireito", "IndicadorDireito", "MedioDireito", "AnularDireito", "MinimoDireito", "PolegarEsquerdo", "IndicadorEsquerdo", "MedioEsquerdo", "AnularEsquerdo", "MinimoEsquerdo", "NomeIdent", "MatriculaFunc", "CodigoAnomalia", "NumeroPosto", "CodigoMotivoBaixa", "DataBaixa", "DataNasc", "NumeroGrade", "NumeroOrdem", "EstadoCivil", "Nacionalidade", "NomePai", "NomeMae", "Matesp", "HoraAtu", "GrauInstrucao", "Renaid", "Tipopp" };
	private ResultSet query = null;

	public String insert(Long pNumeroRg, Long pNumeroCpf, Integer pDataAtualizacao, Integer pDataInclusao, Integer pMatriculaInclusao, Long pNumeroProtocolo, String pPolegarDireito, String pIndicadorDireito, String pMedioDireito, String pAnularDireito, String pMinimoDireito, String pPolegarEsquerdo, String pIndicadorEsquerdo, String pMedioEsquerdo, String pAnularEsquerdo, String pMinimoEsquerdo, String pNomeIdent, Integer pMatriculaFunc, Integer pCodigoAnomalia, Integer pNumeroPosto, Integer pCodigoMotivoBaixa, Integer pDataBaixa, Integer pDataNasc, Integer pNumeroGrade, Integer pNumeroOrdem, Integer pEstadoCivil, Integer pNacionalidade, String pNomePai, String pNomeMae, Integer pMatesp, Integer pHoraAtu, Integer pGrauInstrucao, String pRenaid, Integer pTipopp) {

		String sql = "{ ? = call sp_grava_Did_Historico ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ) }";
		UUID pId;
		codigoRetorno = 0;
		qtdRegistros = 0;
		nroRegistro = 0;
		msgRetorno = "";
		try {

			CallableStatement stp = HibernateUtil.getConnection().prepareCall(sql);
			stp.registerOutParameter(1, Types.OTHER);
			stp.setLong(2, pNumeroRg); // (getColuna("NumeroRg")
			stp.setLong(3, pNumeroCpf); // (getColuna("NumeroCpf")
			stp.setInt(4, pDataAtualizacao); // (getColuna("DataAtualizacao")
			stp.setInt(5, pDataInclusao); // (getColuna("DataInclusao")
			stp.setInt(6, pMatriculaInclusao); // (getColuna("MatriculaInclusao")
			stp.setLong(7, pNumeroProtocolo); // (getColuna("NumeroProtocolo")
			stp.setString(8, pPolegarDireito); // (getColuna("PolegarDireito")
			stp.setString(9, pIndicadorDireito); // (getColuna("IndicadorDireito")
			stp.setString(10, pMedioDireito); // (getColuna("MedioDireito")
			stp.setString(11, pAnularDireito); // (getColuna("AnularDireito")
			stp.setString(12, pMinimoDireito); // (getColuna("MinimoDireito")
			stp.setString(13, pPolegarEsquerdo); // (getColuna("PolegarEsquerdo")
			stp.setString(14, pIndicadorEsquerdo); // (getColuna("IndicadorEsquerdo")
			stp.setString(15, pMedioEsquerdo); // (getColuna("MedioEsquerdo")
			stp.setString(16, pAnularEsquerdo); // (getColuna("AnularEsquerdo")
			stp.setString(17, pMinimoEsquerdo); // (getColuna("MinimoEsquerdo")
			stp.setString(18, pNomeIdent); // (getColuna("NomeIdent")
			stp.setInt(19, pMatriculaFunc); // (getColuna("MatriculaFunc")
			stp.setInt(20, pCodigoAnomalia); // (getColuna("CodigoAnomalia")
			stp.setInt(21, pNumeroPosto); // (getColuna("NumeroPosto")
			stp.setInt(22, pCodigoMotivoBaixa); // (getColuna("CodigoMotivoBaixa")
			stp.setInt(23, pDataBaixa); // (getColuna("DataBaixa")
			stp.setInt(24, pDataNasc); // (getColuna("DataNasc")
			stp.setInt(25, pNumeroGrade); // (getColuna("NumeroGrade")
			stp.setInt(26, pNumeroOrdem); // (getColuna("NumeroOrdem")
			stp.setInt(27, pEstadoCivil); // (getColuna("EstadoCivil")
			stp.setInt(28, pNacionalidade); // (getColuna("Nacionalidade")
			stp.setString(29, pNomePai); // (getColuna("NomePai")
			stp.setString(30, pNomeMae); // (getColuna("NomeMae")
			stp.setInt(31, pMatesp); // (getColuna("Matesp")
			stp.setInt(32, pHoraAtu); // (getColuna("HoraAtu")
			stp.setInt(33, pGrauInstrucao); // (getColuna("GrauInstrucao")
			stp.setString(34, pRenaid); // (getColuna("Renaid")
			stp.setInt(35, pTipopp); // (getColuna("Tipopp")
			// execute SP
			stp.execute();
			pId = (UUID) stp.getObject(1);
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
			return null;
		}
		return String.valueOf(pId);
	}

	public ResultSet selectNomeIdent(String pNomeIdent) {

		String sql = "select * from sp_consNomeIdent_Did_Historico (";
		sql = sql + "pNomeIdent := '" + pNomeIdent + "' ";
		sql = sql + ")";
		codigoRetorno = 0;
		qtdRegistros = 0;
		nroRegistro = 0;
		msgRetorno = "";
		try {
			query = HibernateUtil.executarQuery(sql);
			if (query == null) {
				return null;
			} else {
				query.first();
				if (query.getRow() == 0) {
					query = null;
					return query;
				}
				if (query.first()) {
					query.last();
					qtdRegistros = query.getRow();
					nroRegistro = 1;
					query.first();
				}
			}
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
		}

		return query;
	}

	public ResultSet selectNumeroCpf(Long pNumeroCpf) {

		String sql = "select * from sp_consNumeroCpf_Did_Historico (";
		sql = sql + "pNumeroCpf := '" + String.valueOf(pNumeroCpf) + "' ";
		sql = sql + ")";
		codigoRetorno = 0;
		qtdRegistros = 0;
		nroRegistro = 0;
		msgRetorno = "";
		try {
			query = HibernateUtil.executarQuery(sql);
			if (query == null) {
				return null;
			} else {
				query.first();
				if (query.getRow() == 0) {
					query = null;
					return query;
				}
				if (query.first()) {
					query.last();
					qtdRegistros = query.getRow();
					nroRegistro = 1;
					query.first();
				}
			}
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
		}

		return query;
	}

	public ResultSet selectNumeroProtocolo(Long pNumeroProtocolo) {

		String sql = "select * from sp_consNumeroProtocolo_Did_Historico (";
		sql = sql + "pNumeroProtocolo := '" + String.valueOf(pNumeroProtocolo) + "' ";
		sql = sql + ")";
		codigoRetorno = 0;
		qtdRegistros = 0;
		nroRegistro = 0;
		msgRetorno = "";
		try {
			query = HibernateUtil.executarQuery(sql);
			if (query == null) {
				return null;
			} else {
				query.first();
				if (query.getRow() == 0) {
					query = null;
					return query;
				}
				if (query.first()) {
					query.last();
					qtdRegistros = query.getRow();
					nroRegistro = 1;
					query.first();
				}
			}
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
		}

		return query;
	}

	public ResultSet selectNumeroRg(Long pNumeroRg) {

		String sql = "select * from sp_consNumeroRg_Did_Historico (";
		sql = sql + "pNumeroRg := '" + String.valueOf(pNumeroRg) + "' ";
		sql = sql + ")";
		codigoRetorno = 0;
		qtdRegistros = 0;
		nroRegistro = 0;
		msgRetorno = "";
		try {
			query = HibernateUtil.executarQuery(sql);
			if (query == null) {
				return null;
			} else {
				query.first();
				if (query.getRow() == 0) {
					query = null;
					return query;
				}
				if (query.first()) {
					query.last();
					qtdRegistros = query.getRow();
					nroRegistro = 1;
					query.first();
				}
			}
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
		}

		return query;
	}

	public ResultSet readNomeIdentge(String pNomeIdent) {

		String sql = "select * from sp_leNomeIdentMaiorig_Did_Historico (";
		sql = sql + "pNomeIdent := '" + pNomeIdent + "' ";
		sql = sql + ")";
		codigoRetorno = 0;
		qtdRegistros = 0;
		nroRegistro = 0;
		msgRetorno = "";
		try {
			query = HibernateUtil.executarQuery(sql);
			if (query == null) {
				return null;
			} else {
				query.first();
				if (query.getRow() == 0) {
					query = null;
					return query;
				}
				if (query.first()) {
					query.last();
					qtdRegistros = query.getRow();
					nroRegistro = 1;
					query.first();
				}
			}
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
		}

		return query;
	}

	public ResultSet readNumeroCpfge(Long pNumeroCpf) {

		String sql = "select * from sp_leNumeroCpfMaiorig_Did_Historico (";
		sql = sql + "pNumeroCpf := '" + String.valueOf(pNumeroCpf) + "' ";
		sql = sql + ")";
		codigoRetorno = 0;
		qtdRegistros = 0;
		nroRegistro = 0;
		msgRetorno = "";
		try {
			query = HibernateUtil.executarQuery(sql);
			if (query == null) {
				return null;
			} else {
				query.first();
				if (query.getRow() == 0) {
					query = null;
					return query;
				}
				if (query.first()) {
					query.last();
					qtdRegistros = query.getRow();
					nroRegistro = 1;
					query.first();
				}
			}
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
		}

		return query;
	}

	public ResultSet readNumeroProtocologe(Long pNumeroProtocolo) {

		String sql = "select * from sp_leNumeroProtocoloMaiorig_Did_Historico (";
		sql = sql + "pNumeroProtocolo := '" + String.valueOf(pNumeroProtocolo) + "' ";
		sql = sql + ")";
		codigoRetorno = 0;
		qtdRegistros = 0;
		nroRegistro = 0;
		msgRetorno = "";
		try {
			query = HibernateUtil.executarQuery(sql);
			if (query == null) {
				return null;
			} else {
				query.first();
				if (query.getRow() == 0) {
					query = null;
					return query;
				}
				if (query.first()) {
					query.last();
					qtdRegistros = query.getRow();
					nroRegistro = 1;
					query.first();
				}
			}
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
		}

		return query;
	}

	public ResultSet readNumeroRgge(Long pNumeroRg) {

		String sql = "select * from sp_leNumeroRgMaiorig_Did_Historico (";
		sql = sql + "pNumeroRg := '" + String.valueOf(pNumeroRg) + "' ";
		sql = sql + ")";
		codigoRetorno = 0;
		qtdRegistros = 0;
		nroRegistro = 0;
		msgRetorno = "";
		try {
			query = HibernateUtil.executarQuery(sql);
			if (query == null) {
				return null;
			} else {
				query.first();
				if (query.getRow() == 0) {
					query = null;
					return query;
				}
				if (query.first()) {
					query.last();
					qtdRegistros = query.getRow();
					nroRegistro = 1;
					query.first();
				}
			}
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
		}

		return query;
	}

	public ResultSet findNumeroRg(Long pNumeroRg) {

		String sql = "select * from sp_pesqNumeroRg_Did_Historico (";
		sql = sql + "pNumeroRg := '" + String.valueOf(pNumeroRg) + "' ";
		sql = sql + ")";
		codigoRetorno = 0;
		qtdRegistros = 0;
		nroRegistro = 0;
		msgRetorno = "";
		try {
			query = HibernateUtil.executarQuery(sql);
			if (query == null) {
				return null;
			} else {
				query.first();
				if (query.getRow() == 0) {
					query = null;
					return query;
				}
				if (query.first()) {
					query.last();
					qtdRegistros = query.getRow();
					nroRegistro = 1;
					query.first();
				}
			}
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
		}

		return query;
	}

	public ResultSet pesquisaProximo() {
		// query
		try {
			if (query == null)
				return null;
			if (query.getRow() == 0) {
				query = null;
				return null;
			}
			query.next();
			if (query.getRow() == 0) {
				query = null;
				return null;
			}
			if (query != null) {
				nroRegistro++;
			}
			return query;
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
			return null;
		}
	}

	public boolean temProximo() {
		try {
			if (query == null)
				return false;
			if (query.getRow() == 0) {
				return false;
			}
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
			return false;
		}
		return (nroRegistro < qtdRegistros);
	}

	public void fecha() {
		if (query == null)
			return;
		try {
			query.close();
			query = null;
		} catch (SQLException e) {
			codigoRetorno = 999;
			msgRetorno = e.getMessage();
			query = null;
		}
	}

	public int getColuna(String coluna) {
		for (int i = 0; i < listacol.length; i++) {
			if (listacol[i].equals(coluna))
				return i;
		}
		return -1;
	}

}
